#ifndef __PROTOBUFPKG_H__
#define __PROTOBUFPKG_H__



//protobufPkg缓存大小（应大于等于最大的数据包长度)
#ifndef PROTOBUFPKG_BUFFER_SIZE
#define PROTOBUFPKG_BUFFER_SIZE	64
#endif // !PROTOBUFPKG_BUFFER_SIZE



#include "pb.h"
#include "pb_encode.h"
#include "pb_decode.h"


class ProtobufPkg
{
public:
	ProtobufPkg();

	//序列化，由GetBuffer获取字节流.fields:protobuf描述
	bool Serializ(void* protoObj, const pb_field_t fields[]);

	//反序列化，需要先SetBuffer写入数据再执行返序列化。 protoObj输出参数 .fields:protobuf描述
	bool DeSerializ(void* protoObj, const pb_field_t fields[]);

	//写入缓存
	void SetBuffer(unsigned char* buf, int len);

	//获取缓存指针
	unsigned char* GetBufferPtr();

	//获取有效数据长度
	int GetLen();

	
private:
	unsigned char buffer[PROTOBUFPKG_BUFFER_SIZE];
	int len;

	
};


#endif // !__PROTOBUFPKG_H__
